19.7 Steuerelemente für die Datums- und Zeitangabe
 
Zwei Steuerelemente unterstützen den Anwender bei der Eingabe von Datum und Uhrzeit: MonthCalendar und DateTimePicker. Beide sind direkt von Control abgeleitet.
19.7.1 Das Steuerelement »MonthCalendar«
 
Dieses Steuerelement zeigt den Kalender für einen oder mehrere Monate an. Die Abmessungen des Steuerelements können nicht verändert werden. Der Anwender kann zur Laufzeit ein einzelnes Datum oder auch einen Datumsbereich markieren. Zahlreiche Eigenschaftseinstellungen lassen die Anpassung an besondere Wünsche zu. Das Steuerelement weist eine Titelleiste auf, die links und rechts Pfeilschaltflächen zeigt, mit denen sich durch die Monate navigieren lässt.
 Hier klicken, um das Bild zu vergrößern
Abbildung 19.8 Das »MonthCalendar«-Steuerelement
Auswertung der Benutzerwahl
Das Wichtigste ist für uns natürlich die Auswertung des vom Anwender gewählten Datums. Dazu dienen die Eigenschaften SelectionStart und SelectionEnd, die beide vom Typ DateTime sind. Ist ein Datumsbereich markiert, enthält SelectionStart das erste markierte Datum und SelectionEnd das letzte. Ist nur ein Datum markiert, haben beide Eigenschaften denselben Wert.
Soll das ausgewählte Datum in einer Textbox angezeigt werden, muss der Rückgabewert in einen String konvertiert werden. Mit verschiedenen Methoden der Klasse DateTime können Sie die Rückgabe nach eigenen Wünschen umwandeln. Wollen Sie beispielsweise ein langes Datumsformat ohne Uhrzeitangabe anbieten, müsste die Anweisung wie folgt lauten:
| textBox1.Text = monthCalendar1.SelectionStart.ToLongDateString();
|
Die Ereignisse
Ändert der Anwender den markierten Datumsbereich, treten zwei Ereignisse auf, deren Parameter auswertbar sind: DateSelected und DateChanged. Das Ereignis DateChanged wird ausgelöst, wenn das ausgewählte Datum verändert wird. Wird eine Auswahl per Mausklick getroffen, dabei kann es sich auch um ein bereits ausgewähltes Datum handeln, kommt es zum Ereignis DateSelected. Treten bedingt durch Auswahländerung mit der Maus beide Ereignisse auf, wird DateSelected vor DateChanged ausgelöst.
Die Definition dieser beiden Ereignisse ist wie folgt:
| public event DataRangeEventHandler DateChanged;
|
| public event DataRangeEventHandler DateSelected;
|
Beide Ereignisse liefern dem Ereignishandler ein Objekt vom Typ DateRangeEventArgs, das in den Eigenschaften Start und End vom Typ DateTime das erste beziehungsweise letzte Datum des markierten Bereichs beschreibt.
Die Gestaltungsmöglichkeiten
Wollen Sie mehrere Monate in der Art eines Dreimonatskalenders in Ihrer Form anzeigen, können Sie das über die Eigenschaft CalendarDimensions einstellen:
| public Size CalendarDimensions {get; set;}
|
Der Typ Size beschreibt in diesem Fall die Anzahl der nebeneinander angeordneten Steuerelemente in horizontaler und vertikaler Richtung. Beispielsweise können Sie mit
| monthCalendar1.CalendarDimensions = new Size(1, 3);
|
drei Monatsansichten untereinander anordnen und auf diese Weise den üblichen Dreimonatskalender nachbilden – sofern das die Abmessungen des Formulars gestatten.
Ob Sie es dem Anwender überhaupt gestatten, eine Datumsbereich zu markieren, legen Sie mit der Eigenschaft MaxSelectionCount fest. Wenn Sie die Vorgabe dieser Eigenschaft nicht ändern, ist ein Zeitraum von sieben Tagen auswählbar. Mit MaxSelectionCount=1 kann nur ein Tag markiert werden.
Standardmäßig wird um das aktuelle Datum ein roter Kreis gezeichnet. Mit der Eigenschaft ShowTodayCircle lässt sich dieser abschalten. Auch die Anzeige des aktuellen Datums unterhalb der Monatstage kann ausgeblendet werden. Hierzu dient ShowToday.
Nur selten wird es vorkommen, dass Sie die von der Systemeinstellung übernommene Einstellung des ersten Wochentages ändern wollen. Dieser wird im Steuerelement in der linken Spalte angezeigt. Falls erforderlich, können Sie mit FirstDayOfWeek eine Änderung vornehmen. Häufiger in Anspruch werden Sie vermutlich das Angebot nehmen, rechts neben den Wochen auch die Wochennummer anzeigen zu lassen. Dies wird mit ShowWeekNumbers festgelegt, ist aber standardmäßig deaktiviert.
Mit drei Eigenschaften können Sie festlegen, welche Datumsangaben durch eine fette Schrift hervorgehoben werden sollen: BoldedDates, AnnuallyBoldedDates und MonthlyBoldedDates. Alle drei Eigenschaften repräsentieren ein DateTime-Array.
Letztendlich können mit diversen weiteren Eigenschaften auch die Vorder- und Hintergrundfarbe sowie die Farbe der Titelleiste bunter gestaltet werden.
Tabelle 19.7 Eigenschaften des Steuerelements »MonthCalendar«
| Eigenschaft
|
Beschreibung
|
| AnnuallyBoldedDates
|
Legt in einem Array fest, welche Tage des Jahres fett angezeigt werden.
|
| BoldedDates
|
Legt in einem Array fest, welche einmaligen Datumsangaben fett angezeigt werden.
|
| FirstDayOfWeek
|
Legt den ersten Tag der Woche fest.
|
| MaxSelectionCount
|
Legt die maximale Anzahl von Tagen fest, die ausgewählt werden können.
|
| MonthlyBoldedDates
|
Legt in einem Array fest, welche Tage des Monats fett angezeigt werden sollen.
|
| SelectionEnd
|
Ruft in einem ausgewählten Datumsbereich das Startdatum ab oder legt dieses fest.
|
| SelectionStart
|
Ruft in einem ausgewählten Datumsbereich das Enddatum ab oder legt dieses fest.
|
| ShowToday
|
Gibt an, ob das aktuelle Datum am unteren Rand des Steuerelements angezeigt wird.
|
| ShowTodayCircle
|
Gibt an, ob ein Kreis um das aktuelle Datum gezeichnet wird.
|
| ShowWeekNumbers
|
Gibt an, ob die Wochennummern angezeigt werden.
|
19.7.2 Das Steuerelement »DateTimePicker«
 
Das Steuerelement DateTimePicker dient zur Festlegung eines Datums, das durch eine Uhrzeit ergänzt werden kann. Es erscheint als Kombinationslistenfeld, das beim Aufklappen durch Anklicken der Pfeilschaltfläche den Monatskalender des MonthCalendar-Steuerelements anzeigt. Allerdings stehen dessen vielfältige Gestaltungsmöglichkeiten nicht zur Verfügung. Mit ShortUpDown wird das DateTimePicker-Steuerelement auf ein UpDown-Steuerelement reduziert, in dem mit zwei Pfeilschaltern durch Datumsangaben gescrollt wird. In Abbildung 19.9 sehen Sie beide Varianten.
 Hier klicken, um das Bild zu vergrößern
Abbildung 19.9 Das »DateTimePicker«-Steuerelement
Durch Setzen der Eigenschaft ShowCheckBox=true kann neben dem ausgewählten Datum eine CheckBox angezeigt werden, deren Zustand sich mit Checked auswerten lässt.
Die Eigenschaft Format gibt vor, wie das Datum und die Uhrzeit formatiert werden sollen.
| public DateTimePickerFormat Format {get; set;}
|
Von der Enumeration DateTimePickerFormat werden vier Möglichkeiten zur Formatbeeinflussung beschrieben.
Tabelle 19.8 Die Mitglieder der Enumeration »DateTimePickerFormat«
| Member
|
Beschreibung
|
| Custom
|
Im Steuerelement wird der Wert von Datum und Uhrzeit in einem benutzerdefinierten Format angezeigt.
|
| Short
|
Im Steuerelement wird der Wert von Datum und Uhrzeit im kurzen Datumsformat angezeigt.
|
| Long
|
Im Steuerelement wird der Wert von Datum und Uhrzeit im langen Datumsformat angezeigt.
|
| Time
|
Im Steuerelement wird der Wert von Datum und Uhrzeit in dem Format angezeigt, das durch das Betriebssystem des Benutzers festgelegt ist.
|
Die Einstellung der Format-Eigenschaft auf DateTimePickerFormat.Custom setzt die Definition eines eigenen Formats nach bestimmten Richtlinien voraus. Dazu übergibt man der Eigenschaft CustomFormat des Steuerelements eine Zeichenfolge, die sich aus einer Kombination vordefinierter Formatzeichenfolgen zusammensetzt, die Sie der Dokumentation zu der Eigenschaft CustomFormat entnehmen können.
In der folgenden Abbildung zeigt das Formular die vier Einstellungen von Format. Dem benutzerdefinierten Format liegt die folgende Formatbeschreibung zugrunde:
| dateTimePicker1.CustomFormat = "yyyy – MMMM – ddddd";
|
| dateTimePicker1.Format = DateTimePickerFormat.Custom;
|
 Hier klicken, um das Bild zu vergrößern
Abbildung 19.10 Datums-/Zeitdarstellung im »DateTimePicker«-Steuerelement
Die Auswertung des Steuerelements ist sehr einfach. Dazu dient die Eigenschaft Value, die vom Typ DateTime ist und deshalb in eine passende Zeichenfolge umgewandelt werden muss.
Das einzige erwähnenswerte Ereignis ist ValueChanged, das ausgelöst wird, wenn sich der Inhalt der Eigenschaft Value ändert. |